package com.sghd.fight.module.game.service.configure;

import com.sghd.fight.module.game.service.room.IRoom;
import com.sghd.fight.module.game.service.room.Monster;
import com.sghd.fight.module.game.service.room.Player;
import com.sghd.fight.module.game.service.skill.ConfigService;
import com.sghd.fight.module.game.service.work.RoomTimer;
import com.sghd.pojo.fight.game.LevelVo;
import com.sghd.pojo.fight.game.PlayerVo;
import com.sghd.pojo.fight.game.RoomType;

import java.util.Date;

/**
 * @author frank
 * @date 2018-10-25 9:55
 * @desc
 **/
public interface Configure {
    /**
     * 获取战斗的类型名，由该类型名决定正场比赛中的各相关对象的具体类型
     * @return
     */
    RoomType getType();

    /**
     * 构建战斗 创建房间
     * @param roomId
     * @param timer
     * @param eventBus
     * @return
     */
    IRoom build(long roomId, RoomTimer timer);

    IRoom build(long roomId, RoomTimer timer, LevelVo levelVo);

    /**
     * 转换战斗单位 可能返回空
     * @param playerId
     * @param id
     * @return
     */
    Player transform(PlayerVo playerInfo, IRoom room, Date date);

    Monster transformByMonsterId(PlayerVo playerInfo, IRoom room, Date date);

    ConfigService getConfigService();

    Player transformRobot(PlayerVo left, IRoom room, Date date);
}
